package com.chenfan.mcn.model.dto;

import com.chenfan.common.extension.validation.groups.Modify;
import com.chenfan.mcn.model.ContractExcutionOrder;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author tangwei
 * Date:     2021/1/26 10:50
 * Description: 收入合同补充协议新增参数
 */
@Data
public class IncomeAgreementAddDTO implements Serializable {

    private static final long serialVersionUID = 3250201239561820865L;

    /**
     * 主键ID
     */
    @NotNull(message = "主键ID不能为空", groups = {Modify.class})
    private Long id;

    /**
     * 收入合同表主键id
     */
    @NotNull(message = "收入合同ID不能为空")
    private Long incomeContractId;

    /**
     * 收入合同编号
     */
    @NotBlank(message = "收入合同编号不能为空")
    private String incomeContractCode;

    /**
     * 主要变更内容（1合同金额；2执行单；3其他;4收入合同）
     */
    @NotBlank(message = "主要变更内容不能为空")
    private String changeContent;

    /**
     * 变更说明
     */
    private String changeDesc;

    /**
     * 原合同金额
     */
    private BigDecimal originalAmount;

    /**
     * 现合同金额
     */
    private BigDecimal currentAmount;

    /**
     * 变更理由
     */
    @NotBlank(message = "变更理由不能为空")
    private String changeReason;

    /**
     * 上传合同
     */
    @NotBlank(message = "请上传合同")
    private String contactFile;

    /**
     * 审批状态:0_待提交、1_审批中、2_审批通过、3_审批拒绝、4_已撤回、5_已作废
     */
    private Integer approvalStatus;

    /**
     * 执行单集合
     */
    private List<ContractExcutionOrder> contractExcutionOrders;

    /**
     * 原广告金额
     */
    private BigDecimal originalAdAmount;

    /**
     * 广告金额
     */
    private BigDecimal adAmount;

    /**
     * 我司合同主体-变更后
     */
    private Long companyContractSubjectIdAfter;

    /**
     * 开票形式：0无需开票；1开票待定；2开票
     */
    private Integer invoiceForm;

    /**
     * 客户开票信息id
     */
    private Long customerBillingId;

    /**
     * 开票类型：普票；专票
     */
    private String invoiceType;

    /**
     * 发票内容
     */
    private String invoiceContent;

    /**
     * 发票备注
     */
    private String invoiceRemark;

    /**
     * 变更后平台单号
     */
    private String platformOrderCodeAfter;

    /**
     * 清空发票抬头
     */
    public void clearInvoice() {
        this.invoiceForm = null;
        this.customerBillingId = null;
        this.invoiceType = null;
        this.invoiceContent = null;
        this.invoiceRemark = null;
    }
}